BigDFT.Visualization module

This module has the routines and data structures necessary to allow one to generate visualizations of a atomic systems. We also include helper routines for generating colors.

class InlineVisualizer(xsize=400, ysize=300, nrow=1, ncol=1)[source]

This class allows for a quick viewing of BigDFT systems using the py3Dmol package.

https://pypi.org/project/py3Dmol/

xsize

the width of the picture in pixels.

Type:

int

ysize

the height of the picture in pixels.

Type:

int

nrow

if present, the number of rows for displaying a grid of structures.

Type:

int

ncol

if present, the number of columns for displaying a grid of structures.

Type:

int

display_system(*syslist, **kwargs)[source]

Display an animation of a sequence of systems. The colordict can be used to color each fragment. When only one system is passed it will remain still.

Parameters:
  • syslist (BigDFT.Systems.System) – the systems to visualize.

  • colordict (dict) – a dictionary from fragment ids to hex colors, can also be a list of dicts (one for each system) if using a grid.

  • field_vals (list) – values of the field to decide colors of the keys

  • cartoon (bool) – set to True to use the cartoon view. This only works if atom names and residues are properly defined.

  • gridlist (list) – if present, defines the row and column indices for visualizing multiple systems on a grid.

  • show (bool) – you can explicitly defer showing.

class VMDGenerator(representation='CPK', color=16)[source]

This class contains the routines you would use for visualization of a system using the VMD program.

representation

the vmd representation to draw with. https://www.ks.uiuc.edu/Research/vmd/allversions/repimages/#representations

Type:

str

color

the default color to draw with.

Type:

int

visualize_fragments(system, scriptfile, geomfile, fragcolors=None)[source]

This generates a script for visualizing the fragmentation of a system using VMD.

Parameters:
  • system (BigDFT.Systems.System) – the system to visualize.

  • scriptfile (str) – the name of the file to write the vmd script to (usually has extension .tcl)

  • geomfile (str) – the filename for where to write an xyz file of the system.

  • fragcolors (dict) – optionally, a dictionary from fragment ids to fragment colors. Colors are integers between 0 and 32.

get_distinct_colors(keys, name='tab20', fuzz=True)[source]

This generates a dictionary of distinct colors based on a matplotlib colormap.

Parameters:
  • keys (list) – a list of keys.

  • name (str) – the name of the matplotlib colormap to use.

  • fuzz (bool) – some color maps (included tab20) only have a distinct set of colors. The fuzz option adds increased randomness to make up for this.

Returns:

a dictionary mapping matplotlib keys to RGB colors.

Return type:

(dict)

truncate_colormap(cmap, compressed_values=None, vmin=0.0, vmax=1.0, N=- 1)[source]

Truncate a colormap from a given cmap. Taken from https://stackoverflow.com/questions/40929467/ how-to-use-and-plot-only-a-part-of-a-colorbar-in-matplotlib.

get_atomic_colordict(sys)[source]

Builds a dictionary of colors for a system where each atom is its own fragment. This uses the built in colors of jmol.

Parameters:
Returns:

a dictionary mapping fragment ids to colors.

Return type:

dict

get_colordict(keys, field_vals=None, vmin=None, vmax=None, colorcode=None)[source]

Build a dictionary of colors for each of the keys. If the field_dict is provided, order the colors of the keys in terms of the sorting of the filed values

Parameters:
  • keys (list) – keys of the color dictionary

  • field_vals (list) – values of the field to decide the colors of the keys

  • vmin (float) – minimum value of the colors. Useful to extend the range below the minimum of field_vals.

  • vmax (float) – maximum value of the colors. Useful to extend the range below the maximum of field_vals.

  • colorcode (str) – the string of the colorcode. Default is ‘rainbow’ if no field_vals are present. If field_vals have negative data, default is seismic. Otherwise Reds.

Returns:

the dictionary of the keys, and the corresponding colors.

The dictionary contains also special keys arguments to be passed to the colorbar method of matplotlib:

  • ’__mappable__’, which is associated the reference to the matplotlib.ScalarMappable instance that is associated to the colordict. This instance can be useful to draw colorbars associated to such a colordict.

Return type:

dict

contrasting_text_color(hstr)[source]

Input a string without hash sign of RGB hex digits to compute complementary contrasting color such as for fonts. Function borrowed from https://stackoverflow.com/questions/1855884/ determine-font-color-based-on-background-color

Parameters:

hstr (str) – the color string, preferably in hex.

Returns:

string of the contrasting color, black or white.

Return type:

str

_example()[source]

The following is an example of module usage:

"""Visualization Example"""
from BigDFT.Systems import System
from BigDFT.Fragments import Fragment
from BigDFT.IO import XYZReader

# Read in a system.
sys = System()
with XYZReader("SiO") as ifile:
    for i, at in enumerate(ifile):
        sys["FRA:"+str(i)] = Fragment([at])

# Display the system.
viz = InlineVisualizer(400, 300)
viz.display_system(sys)

# Change the colors
colordict = get_distinct_colors(list(sys))
viz.display_system(sys, colordict=colordict)